<?php

class Categoria {

    public function post_save($categoria) {
        $sql = "";

        try {
            if ($categoria->id == 0) {
                //insert

                $sql = "INSERT INTO categorias (nome) VALUES (:categoriaNome)";
            }
            //update
            else {
                $sql = "UPDATE categorias SET nome = :categoriaNome WHERE id = :id";
            }

            $stmt = DB::prepare($sql);
            $stmt->bindParam("categoriaNome", $categoria->nome);

            if ($categoria->id != 0) {
                $stmt->bindParam("id", $categoria->id);
            }
            $stmt->execute();

            if ($categoria->id != 0) {
                $categoria->id = DB::lastInsertId();
                return $categoria->id;
            }
        }
        catch (Exception $exc) {

            if ($exc->getMessage() . trim("Duplicate"))
                throw new Exception("Ops! esta categoria já existe.");
        }
    }

//lista todas as categorias registradas
    function get_listAll($filtro) {

        $filtro = "{$filtro}%";
        $sql    = "SELECT * FROM categorias WHERE nome LIKE :filtro";
        $stmt   = DB::prepare($sql);
        $stmt->bindParam("filtro", $filtro);
        $stmt->execute();
        $result = $stmt->fetchAll();
        return $result;
    }

    //usado para carregar a categoria para edição
    function get_list($id) {

        $sql    = "SELECT * FROM categorias WHERE id = :id";
        $stmt   = DB::prepare($sql);
        $stmt->bindParam("id", $id);
        $stmt->execute();
        $result = $stmt->fetch();
        return $result;
    }

    //deleta uma categoria conforme o id passado
    function post_delete($categoria) {
        $sqlDeleteCategoria = "DELETE FROM categorias WHERE id = :id";
        try {
            $stmt = DB::prepare($sqlDeleteCategoria);
            $stmt->bindParam("id", $categoria->id);
            $stmt->execute();
        }
        catch (Exception $exc) {

            if ($exc->getMessage() .trim("SQLSTATE[23000]: Integrity constraint violation: 1451 Cannot delete or update a parent row: a foreign key constraint fails (`theosulc_mk_manager_bk`.`cursos`, CONSTRAINT `fk_cursos_categorias1` FOREIGN KEY (`idCategoria`) REFERENCES `categorias` (`id`) ON DELETE NO ACTION ON UPDATE NO ACTION)"))
                throw new Exception("Ops! esta categoria já está associada a um curso.");
        }
    }

}

?>
